package com.uncp.comisiondeadmision.dao;

import java.sql.SQLException;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import org.apache.poi.hssf.record.formula.functions.Echo;

import com.uncp.comisiondeadmision.util.entity.ECarnet;
import com.uncp.comisiondeadmision.util.entity.EPostulante;

public class DCarnet implements IDCarnet{
	
	private EntityManagerFactory emf ;
	private EntityManager em;
	
	public void setEmf(EntityManagerFactory emf ) {
		this.emf = emf;
	}

	@SuppressWarnings("unchecked")
	public List<ECarnet> listarCarnet(String estadoPostu,String estadoSolic) throws SQLException {
		 
		 em=emf.createEntityManager();
		 em = emf.createEntityManager();
			
		 List<ECarnet> lista = null;
          String estaPostu = "Activo";
		try {			
			Query query = em.createQuery("select c from ECarnet c join " +
						  "  c.postulante p join p.solicitudes s" +
						  "  where c.str_estado=:estadoCarnet " +
				   	  "  and s.str_estado=:estadoSolic and p.str_estado_postu=:estadoPostu");

            query.setParameter("estadoCarnet", estadoPostu);
           query.setParameter("estadoSolic", estadoSolic);
           query.setParameter("estadoPostu", estaPostu);

		   lista = query.getResultList();
		   
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
	      em.close();
		}

		return lista;
	}

	public Integer insertarCarnet(ECarnet entidad) throws SQLException {
		
		Integer inserto = -1 ;
		em = emf.createEntityManager();

		try {
			em.getTransaction().begin();
			em.persist(entidad);
			inserto = 1;

		} catch (Exception e) {
			e.printStackTrace();
			em.getTransaction().rollback();
			inserto = -1;
		} finally {
			em.getTransaction().commit();
			em.close();
		}

		return inserto;
	}

	@SuppressWarnings("unchecked")
	public List<EPostulante> listaPostulantesPorEstados(String estadoPostu,
			String estadoSolic) throws SQLException {
	
		 em=emf.createEntityManager();
		 em = emf.createEntityManager();
			
		 List<EPostulante> lista = null;

		try {

			
			Query query = em.createQuery("select p from ESolicitud s inner join " +
						  "  s.postulante p" +
						  "  where  p.str_estado_postu=:estadoPostu " +
				   	  "  and s.str_estado =:estadoSolic");

query.setParameter("estadoPostu", estadoPostu);
query.setParameter("estadoSolic", estadoSolic);

		   lista = query.getResultList();
		   
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
	      em.close();
		}

		return lista;
		
	}

	

}
